#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""  
@Project : wupeiqi_async
@File : task.py
@Author : Royce
@Time : 2025/7/10 17:52  
@脚本说明 : 
"""
import asyncio

from util.util import timer


@timer('ms')
async def set_after(fut):
    await asyncio.sleep(2)
    fut.set_result("666")


@timer('ms')
async def main():
    loop = asyncio.get_running_loop()  # 获取当前事件循环
    fut = loop.create_future()  # 创建一个任务（Future对象），没绑定任何行为，则这个任务永远不知道什么时候结束。

    # 创建一个任务（Task对象），绑定了set_after函数，函数内部在2s之后，会给fut赋值。
    # 即手动设置future任务的最终结果，那么fut就可以结束了。
    await loop.create_task(set_after(fut))

    data = await fut  # 等待 Future对象获取最终结果，否则一直等下去
    print(data)


if __name__ == '__main__':
    asyncio.run(main())
